package main

import (
	"fmt"
)

func main9() {
	//不像数组，slice 的类型仅由它所包含的元素决定（不像数组中还需要元素的个数）。
	// 要创建一个长度非零的空slice，需要使用内建的方法 make。
	// 这里我们创建了一个长度为3的 string 类型 slice（初始化为零值）。
	s := make([]string, 3)
	fmt.Println(s)

	// 我们可以和数组一样设置和得到值
	s[0] = "a"
	s[1] = "b"
	s[2] = "c"
	fmt.Println(len(s), s)

	s = append(s, "d")
	fmt.Println(len(s), s)

	s = append(s, "e", "f")
	fmt.Println(len(s), s)

	// Slice 也可以被 copy。这里我们创建一个空的和 s 有相同长度的 slice c，并且将 s 复制给 c。
	c := make([]string, len(s))
	copy(c, s)
	fmt.Println(len(c), c)

	fmt.Println()
	s[1] = "h"
	fmt.Println(len(c), c)
	fmt.Println(len(s), s)

	fmt.Println()
	l := s[:5]
	fmt.Println(len(l), l)

	s[1] = "s"
	fmt.Println(l)
	fmt.Println(s)

}
